home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 2.iso
/
ACORNUSERS
/
EMULATOR
/
FMSX
/
!Fmsx
/
hdr
/
CVars
next >
Wrap
Text File
|
1994-12-07
|
2KB
|
106 lines
; hdr.CVars
;
; Define macros for Assembler source.
;
;**************************************************************************
; ExternVar $var
;
; Declare external C variables.
;
MACRO
ImportVar $var
IMPORT $var
$var._Indirect DCD $var
MEND
;**************************************************************************
; GlobalVar $var
;
; Declare external C variables.
;
MACRO
ExportVar $var
EXPORT $var
$var._Indirect DCD $var
MEND
;**************************************************************************
; StaticBaseFromSL $reg, $cc
;
; Set $reg to point to the base of the static data area using SL set up
; from C call.
;
MACRO
$label StaticBaseFromSL $reg, $cc
$label LDR$cc $reg, [sl, #-536]
MEND
;**************************************************************************
; StaticBaseFromSP $reg, $cc
;
; Set $reg to point to the base of the static data area using stack frame
; placed at Mb boundary below SP by C call.
;
MACRO
$label StaticBaseFromSP $reg, $cc
$label MOV$cc $reg, sp, LSR #20
MOV$cc $reg, $reg, LSL #20
LDR$cc $reg, [$reg, #4]
MEND
;**************************************************************************
; StaticBaseFromWP $reg, $cc
;
; Set $reg to point to the base of the static data area using private word
; contents only ie. workspace pointer.
;
MACRO
$label StaticBaseFromWP $reg, $pw, $cc
$label LDR$cc $reg, [$pw, #8]
MEND
;**************************************************************************
; LDRVar $reg, $base, $var, $cc
;
; Load the contents of an external C variable.
;
MACRO
$label LDRVar $reg, $base, $var, $cc
$label LDR$cc $reg, $var._Indirect
LDR$cc $reg, [$base, $reg]
MEND
;**************************************************************************
; STRVar $reg, $base, $var, $w1, $cc
;
; Set the contents of an external C variable.
;
MACRO
$label STRVar $reg, $base, $var, $w1, $cc
$label LDR$cc $w1, $var._Indirect
STR$cc $reg, [$base, $w1]
MEND
;**************************************************************************
; ADRVar $reg, $base, $var, $cc
;
; Set $reg to point to the static variable $var.
;
MACRO
$label ADRVar $reg, $base, $var, $cc
$label LDR$cc $reg, $var._Indirect
ADD$cc $reg, $base, $reg
MEND
END